Increasingly, financial and other sensitive transactions are being performed by personal computers. This has increased the need for secure storage of data. Modern cryptography techniques are often used to protect such data from unauthorized access.
New security methods, however, have brought about a need to store and protect "core" data secrets, such as private cryptographic keys, credit card numbers, and other small pieces of secret data. Presently, this responsibility is left to individual application programs or to personal computer users themselves. Although programs are available that allow users to encrypt and store data, such programs cannot typically be used by other application programs. Currently, each application program has to devise a safe and secure method to store such data.
As an example of the problems associated with the current state of the art, consider the issues involved in exploiting smart card technologies. A smart card is particularly well suited as a receptacle for core data secrets such as those described above. In addition, smart cards can be used to authenticate users by requiring each user to insert his or her personal smart card into a receptacle associated with the user's personal computer. Tamper-proof smart cards have been designed for just these purposes.
Problems arise without agreed-upon standards for using such devices. Although a developer could provide capabilities for working with a limited number of smart cards, it would be difficult or impossible to anticipate all the different variations that might eventually arise. This fact makes it impractical to implement smart card technology in various different applications.
Although some storage media such as magnetic hard disks do not present the challenges of smart cards, many software developers simply do not have the background and knowledge required to safely implement modern cryptographic techniques. Even if they did, it would be inefficient for each developer to undertake the complex task of developing a method of storing core secrets. Furthermore, resulting solutions would be incompatible. It would be much more preferable to adopt a common scheme for storing such data, and to avoid having to implement a new solution for every different application program.
The common scheme described below allows a user's core data secrets to be securely stored on the user's local computer. The core data secrets are encrypted on the user's computer with a locally generated encryption key that is derived from a logon secret (such as a password) supplied by a user during a logon procedure. A problem arises in network environments in which the user's password (or other authentication information) can change without participation of the local computer. This can happen, for instance, when a network administrator resets the user's password. It can also happen when a user changes his or her network logon password when using a different computer. When these events happen, it becomes impossible to regenerate the local encryption key. Thus, the inventors have realized a need to backup the local encryption key for potential recovery. However, it is not desirable to simply store the master key on the user's computer, since this would make it recoverable by hostile entities. Although the local key could itself be encrypted and stored on the local computer, this would involve another key which would then need to be protected. Thus, the invention concerns the storage of local encryption keys and other items that need to be securely stored on the user's local computer.